home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / misc / volume26 / parseargs / patch10 < prev    next >
Encoding:
Text File  |  1991-12-27  |  18.3 KB  |  522 lines

  1. Newsgroups: comp.sources.misc
  2. From: brad@hcx1.ssd.csd.harris.com (Brad Appleton)
  3. Subject:  v26i116:  parseargs - functions to parse command line arguments, Patch10
  4. Message-ID: <1991Dec22.205629.22580@sparky.imd.sterling.com>
  5. X-Md4-Signature: 0f0501ceec759861f89d8fc11a62c655
  6. Date: Sun, 22 Dec 1991 20:56:29 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: brad@hcx1.ssd.csd.harris.com (Brad Appleton)
  10. Posting-number: Volume 26, Issue 116
  11. Archive-name: parseargs/patch10
  12. Environment: UNIX, VMS, MS-DOS, OS/2, Amiga
  13. Patch-To: parseargs: Volume 17, Issue 46-57
  14.  
  15. This is patch10 of parseargs. It fixes some bugs introduced by (a poorly 
  16. tested) patchlevel 9 and adds one new enhancement (the optional use of
  17. '--' instead of '+' as the unix long option prefix).
  18.  
  19. To install this patch:
  20.  
  21. 1) cd to your parseargs directory and unshar this file to create PATCH10
  22.  
  23. 2) type "patch -p0 <PATCH10"
  24.  
  25. ______________________ "And miles to go before I sleep." ______________________
  26.  Brad Appleton                         Harris Corp., Computer Systems Division
  27.    Software Engineer                   2101 West Cypress Creek Road,  M/S 161 
  28.      brad@ssd.csd.harris.com           Fort Lauderdale, FL  33309-1892  USA
  29.        ...!uunet!travis!brad                 Phone: (305) 973-5190
  30. ~~~~~~~~~~~~~~~~~~~~ Disclaimer: I said it, not my company! ~~~~~~~~~~~~~~~~~~~
  31.  
  32. #! /bin/sh
  33. # This is a shell archive.  Remove anything before this line, then unpack
  34. # it by saving it into a file and typing "sh file".  To overwrite existing
  35. # files, type "sh file -c".  You can also feed this as standard input via
  36. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  37. # will see the following message at the end:
  38. #        "End of shell archive."
  39. # Contents:  PATCH10
  40. # Wrapped by brad@hcx1 on Thu Dec  5 10:15:52 1991
  41. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  42. if test -f 'PATCH10' -a "${1}" != "-c" ; then 
  43.   echo shar: Will not clobber existing file \"'PATCH10'\"
  44. else
  45. echo shar: Extracting \"'PATCH10'\" \(15747 characters\)
  46. sed "s/^X//" >'PATCH10' <<'END_OF_FILE'
  47. X*** MANIFEST.OLD    Thu Dec  5 09:54:30 1991
  48. X--- MANIFEST    Tue Nov 26 16:39:21 1991
  49. X***************
  50. X*** 47,53 ****
  51. X   parseargs.c                8    C source for parseargs(1)
  52. X   parseargs.h                7    include file for parseargs library
  53. X   parseargs.pl               2    parseargs for perl
  54. X!  patchlevel.h               2    list of patches (most recent first)
  55. X   pgopen.c                   4    pipe output to a pager
  56. X   pgopen.h                   1    include file for pgopen.c
  57. X   stest.c                    4    test program for parseargs(3)
  58. X--- 47,53 ----
  59. X   parseargs.c                8    C source for parseargs(1)
  60. X   parseargs.h                7    include file for parseargs library
  61. X   parseargs.pl               2    parseargs for perl
  62. X!  patchlevel.h               3    list of patches (most recent first)
  63. X   pgopen.c                   4    pipe output to a pager
  64. X   pgopen.h                   1    include file for pgopen.c
  65. X   stest.c                    4    test program for parseargs(3)
  66. X***************
  67. X*** 62,68 ****
  68. X   test.sh                    1    Bourne shell test program for parseargs(1)
  69. X   test.zsh                   2    Z shell test program for parseargs(1)
  70. X   unix_args.c                5    parse Unix command-lines
  71. X!  unix_man.c                 3    print Unix manual-page templates
  72. X   useful.h                   3    common include file for the library
  73. X   vms_args.c                 6    parse VAX/VMS DCL command-lines
  74. X   vprintf.c                  3    portable vfprintf, vprintf, and vsprintf
  75. X--- 62,68 ----
  76. X   test.sh                    1    Bourne shell test program for parseargs(1)
  77. X   test.zsh                   2    Z shell test program for parseargs(1)
  78. X   unix_args.c                5    parse Unix command-lines
  79. X!  unix_man.c                 4    print Unix manual-page templates
  80. X   useful.h                   3    common include file for the library
  81. X   vms_args.c                 6    parse VAX/VMS DCL command-lines
  82. X   vprintf.c                  3    portable vfprintf, vprintf, and vsprintf
  83. X*** README.OLD    Thu Dec  5 09:54:39 1991
  84. X--- README    Thu Dec  5 09:54:03 1991
  85. X***************
  86. X*** 628,633 ****
  87. X--- 628,636 ----
  88. X   I also provided extensive updating to the manual pages so that they
  89. X   now reflect the current capabilities of parseargs!
  90. X  
  91. X+  Since the FSF has decided to change the use of '+' as a long-option prefix
  92. X+  to '--' (in order to be POSIX conformant), I added some #ifdef POSIX_SOURCE
  93. X+  code to unix_args.c to use '--' instead of '+' as the long option prefix.
  94. X  
  95. X   MODIFICATIONS TO parseargs.h
  96. X   ============================
  97. X***************
  98. X*** 770,776 ****
  99. X   If any of the following macros are #defined at compile time then they will
  100. X   have the following effect:
  101. X  
  102. X!     USE_PAGER    --  for Unix systems only. Parseargs will include the code
  103. X                       which pipes usage messages to a paging program
  104. X  
  105. X      NOFLOAT      --  Parseargs will NOT include the code for the predefined
  106. X--- 773,779 ----
  107. X   If any of the following macros are #defined at compile time then they will
  108. X   have the following effect:
  109. X  
  110. X!     USE_PAGER    --  For Unix systems only. Parseargs will include the code
  111. X                       which pipes usage messages to a paging program
  112. X  
  113. X      NOFLOAT      --  Parseargs will NOT include the code for the predefined
  114. X***************
  115. X*** 783,788 ****
  116. X--- 786,794 ----
  117. X      USE_TERMINFO
  118. X      USE_TERMCAP  --  Parseargs will use curses/terminfo/termcap when trying
  119. X                       to figure out the size of the screen.
  120. X+ 
  121. X+     POSIX_SOURCE --  For unix_style only. Parseargs will use '--' instead of
  122. X+                      '+' as the long-option prefix.
  123. X  
  124. X   IBM-PC VERSION OF parseargs(3)
  125. X   ==============================
  126. X*** amiga_args.c.OLD    Thu Dec  5 09:54:49 1991
  127. X--- amiga_args.c    Tue Nov 26 16:31:18 1991
  128. X***************
  129. X*** 518,524 ****
  130. X  
  131. X        if ( description  &&  *description ) {
  132. X           fprintf( fp, "Description:\n" );
  133. X!          indent_para(fp, max_cols, 8, "", 0, description);
  134. X           fputc( '\n', fp );
  135. X        }
  136. X     }/*if*/
  137. X--- 518,524 ----
  138. X  
  139. X        if ( description  &&  *description ) {
  140. X           fprintf( fp, "Description:\n" );
  141. X!          indent_para(fp, max_cols, 8, "", 0, description, 0);
  142. X           fputc( '\n', fp );
  143. X        }
  144. X     }/*if*/
  145. X*** doc/parseargs.man3.OLD    Thu Dec  5 09:55:16 1991
  146. X--- doc/parseargs.man3    Thu Dec  5 09:41:33 1991
  147. X***************
  148. X*** 197,203 ****
  149. X  Under \s-1UNIX\s+1, \s-1MS-DOS\s+1, and \s-1OS\s+1/2,
  150. X  \fIparseargs\fP also allows for long
  151. X  options in addition to single character options.
  152. X! Under \s-1UNIX\s+1, long options are denoted by a `\fB+\fP' character.
  153. X  Under \s-1MS-DOS\s+1, and \s-1OS\s+1/2, long options are denoted by the second
  154. X  character in the \s-1SWITCHAR\s+1 environment variable. If there is no second
  155. X  character, then if the first character is `\-', then a `\fB+\fP' is used,
  156. X--- 197,205 ----
  157. X  Under \s-1UNIX\s+1, \s-1MS-DOS\s+1, and \s-1OS\s+1/2,
  158. X  \fIparseargs\fP also allows for long
  159. X  options in addition to single character options.
  160. X! Under \s-1UNIX\s+1, long options are denoted by a `\fB+\fP' character 
  161. X! (unless \fIparseargs\fP was compiled for conformance with POSIX, inc which
  162. X! case the long option prefix is `\fB\-\|\-\fP').
  163. X  Under \s-1MS-DOS\s+1, and \s-1OS\s+1/2, long options are denoted by the second
  164. X  character in the \s-1SWITCHAR\s+1 environment variable. If there is no second
  165. X  character, then if the first character is `\-', then a `\fB+\fP' is used,
  166. X*** ibm_args.c.OLD    Thu Dec  5 09:55:31 1991
  167. X--- ibm_args.c    Tue Nov 26 16:31:27 1991
  168. X***************
  169. X*** 764,770 ****
  170. X  
  171. X        if ( description  &&  *description ) {
  172. X           fprintf( fp, "Description:\n" );
  173. X!          indent_para(fp, max_cols, 8, "", 0, description);
  174. X           fputc( '\n', fp );
  175. X        }
  176. X     }/*if*/
  177. X--- 764,770 ----
  178. X  
  179. X        if ( description  &&  *description ) {
  180. X           fprintf( fp, "Description:\n" );
  181. X!          indent_para(fp, max_cols, 8, "", 0, description, 0);
  182. X           fputc( '\n', fp );
  183. X        }
  184. X     }/*if*/
  185. X*** patchlevel.h.OLD    Thu Dec  5 09:55:41 1991
  186. X--- patchlevel.h    Thu Dec  5 09:10:23 1991
  187. X***************
  188. X*** 2,7 ****
  189. X--- 2,17 ----
  190. X  ** ^FILE: patchlevel.h - current patchlevel for parseargs
  191. X  **
  192. X  ** ^HISTORY:
  193. X+ **    12/05/91    Brad Appleton    <brad@ssd.csd.harris.com>
  194. X+ **    Patch10
  195. X+ **    - Fix bug that was introduced in last patch. Pgopen() was not
  196. X+ **      using $USAGE_PAGER, it was only using $PAGER.
  197. X+ **    - When Earl added the extra argument to indent_para(), he forgot to
  198. X+ **      include the argument when printing the command description. I added
  199. X+ **      this into *_args.c
  200. X+ **    - Added #ifdef POSIX_SOURCE stuff to unix_args.c to allow the use 
  201. X+ **      of '--' instead of '+' as the long option prefix.
  202. X+ **
  203. X  **    08/27/91    Brad Appleton    <brad@ssd.csd.harris.com>
  204. X  **    08/27/91    Earl Chew    <cechew@bruce.cs.monash.edu.au>
  205. X  **    Patch09
  206. X***************
  207. X*** 19,25 ****
  208. X  **      at odds with the documentation and requires (int *) on reads.
  209. X  **      Also, should check for NULL cmd-name before passing it to strdup().
  210. X  **    - vms_args.c/is_cmdline():
  211. X! **      Mike Level pointed out to me that if lib$get_foreing returns a
  212. X  **      zero-length string then the proper actions are not taken. This
  213. X  **      has been fixed.
  214. X  **    - vms_args.c, parseargs.h, xparse.c
  215. X--- 29,35 ----
  216. X  **      at odds with the documentation and requires (int *) on reads.
  217. X  **      Also, should check for NULL cmd-name before passing it to strdup().
  218. X  **    - vms_args.c/is_cmdline():
  219. X! **      Mike Levin pointed out to me that if lib$get_foreign returns a
  220. X  **      zero-length string then the proper actions are not taken. This
  221. X  **      has been fixed.
  222. X  **    - vms_args.c, parseargs.h, xparse.c
  223. X***************
  224. X*** 132,138 ****
  225. X  
  226. X  #define  VERSION     2
  227. X  #define  REVISION    0
  228. X! #define  PATCHLEVEL  9
  229. X  
  230. X  #ifdef __STDC__
  231. X     static const char
  232. X--- 142,148 ----
  233. X  
  234. X  #define  VERSION     2
  235. X  #define  REVISION    0
  236. X! #define  PATCHLEVEL  10
  237. X  
  238. X  #ifdef __STDC__
  239. X     static const char
  240. X***************
  241. X*** 139,142 ****
  242. X  #else
  243. X     static char
  244. X  #endif
  245. X!    _Ident[] = "@(#)parseargs  2.0  patchlevel 9";
  246. X--- 149,152 ----
  247. X  #else
  248. X     static char
  249. X  #endif
  250. X!    _Ident[] = "@(#)parseargs  2.0  patchlevel 10";
  251. X*** pgopen.c.OLD    Thu Dec  5 09:55:48 1991
  252. X--- pgopen.c    Wed Nov 27 11:07:35 1991
  253. X***************
  254. X*** 32,38 ****
  255. X  #include <useful.h>
  256. X  
  257. X  /* get #defines for access() call */
  258. X! #include <sys/file.h>
  259. X  #ifndef X_OK
  260. X  #  define X_OK  0x01
  261. X  #endif
  262. X--- 32,40 ----
  263. X  #include <useful.h>
  264. X  
  265. X  /* get #defines for access() call */
  266. X! #ifndef SYSV
  267. X! # include <sys/file.h>
  268. X! #endif
  269. X  #ifndef X_OK
  270. X  #  define X_OK  0x01
  271. X  #endif
  272. X***************
  273. X*** 418,424 ****
  274. X     if ( Pager_Type != PG_NONE )   pg_type = Pager_Type;
  275. X  
  276. X        /* see if the given pager is okay */
  277. X!    if ( !pg_name  ||  !*pg_name  ||  !access(pg_name, X_OK) ) {
  278. X        pg_name = getenv("PAGER");
  279. X     }
  280. X     else {
  281. X--- 420,426 ----
  282. X     if ( Pager_Type != PG_NONE )   pg_type = Pager_Type;
  283. X  
  284. X        /* see if the given pager is okay */
  285. X!    if ( !pg_name  ||  !*pg_name  ||  access(pg_name, X_OK) ) {
  286. X        pg_name = getenv("PAGER");
  287. X     }
  288. X     else {
  289. X*** strfuncs.c.OLD    Thu Dec  5 09:56:00 1991
  290. X--- strfuncs.c    Wed Nov 27 11:08:42 1991
  291. X***************
  292. X*** 32,43 ****
  293. X  **       indent_para() -- print an indented hanging paragraph
  294. X  **
  295. X  ** ^HISTORY:
  296. X  **    08/27/91     Earl Chew     <cechew@bruce.cs.monash.edu.au>
  297. X  **    - add extra length argument to indent_para().
  298. X  **    - add FORCE_KWDCASE() macro
  299. X  **    - add non-writable strings support to get_argname() and
  300. X  **      get_kwdname()
  301. X- **    08/27/91    Earl Chew    <cechew@bruce.cs.monash.edu.au>
  302. X  **    - add get_argpfx() and get_argdesc() for non-writable strings
  303. X  **      support
  304. X  **    - allow zero length string for strsplit()
  305. X--- 32,47 ----
  306. X  **       indent_para() -- print an indented hanging paragraph
  307. X  **
  308. X  ** ^HISTORY:
  309. X+ **
  310. X+ **    11/26/91     Brad Appleton     <brad@ssd.csd.harris.com>
  311. X+ **    - added the following to indent_para(). If last arg is 0,
  312. X+ **      then the whole length is used.
  313. X+ **
  314. X  **    08/27/91     Earl Chew     <cechew@bruce.cs.monash.edu.au>
  315. X  **    - add extra length argument to indent_para().
  316. X  **    - add FORCE_KWDCASE() macro
  317. X  **    - add non-writable strings support to get_argname() and
  318. X  **      get_kwdname()
  319. X  **    - add get_argpfx() and get_argdesc() for non-writable strings
  320. X  **      support
  321. X  **    - allow zero length string for strsplit()
  322. X***************
  323. X*** 650,660 ****
  324. X           do {
  325. X              *pwrite++ = c;
  326. X           } while ( (c = *pread++) && !strchr(separators, c) );
  327. X-          *pwrite++ = '\0';
  328. X-          ++count;
  329. X-          do {
  330. X-             *pwrite++ = c;
  331. X-          } while ( (c = *pread++) && !strchr(separators, c) );
  332. X          *pwrite++ = '\0';
  333. X          ++count;
  334. X        }/*if*/
  335. X--- 654,659 ----
  336. X***************
  337. X*** 1370,1375 ****
  338. X--- 1369,1376 ----
  339. X     register int idx = 0;
  340. X     BOOL first_line = TRUE;
  341. X     char ch;
  342. X+ 
  343. X+    if ( ! textlen )  textlen = strlen( text );
  344. X  
  345. X     /* print the title */
  346. X     fprintf( fp, "%*s%-*s", margin, "", indent, title );
  347. X*** unix_args.c.OLD    Thu Dec  5 09:56:18 1991
  348. X--- unix_args.c    Thu Dec  5 09:21:48 1991
  349. X***************
  350. X*** 6,12 ****
  351. X  **    vectors and to print Unix usage messages.
  352. X  **
  353. X  ** ^HISTORY:
  354. X! **    27/08/91     Earl Chew     <cechew@bruce.cs.monash.edu.au>
  355. X  **    - Use ProgNameLen when accessing ProgName
  356. X  **    - Use get_argdesc() to access description
  357. X  **
  358. X--- 6,16 ----
  359. X  **    vectors and to print Unix usage messages.
  360. X  **
  361. X  ** ^HISTORY:
  362. X! **    12/05/91     Brad Appleton     <brad@ssd.csd.harris.com>
  363. X! **    - added #ifdef POSIX_SOURCE to use "--" instead of "+" as
  364. X! **      GNU conformant prefix for long options.
  365. X! **
  366. X! **    08/27/91     Earl Chew     <cechew@bruce.cs.monash.edu.au>
  367. X  **    - Use ProgNameLen when accessing ProgName
  368. X  **    - Use get_argdesc() to access description
  369. X  **
  370. X***************
  371. X*** 54,67 ****
  372. X  #define isOPT(s)  \
  373. X     ( !BTEST(cmd_flags(cmd), pa_KWDSONLY)  && \
  374. X       !BTEST(cmd_state(cmd), ps_NOFLAGS)  && \
  375. X!      *s == c_OPT_PFX  &&  *(s+1) \
  376. X     )
  377. X  
  378. X  #define isKWD(s)  \
  379. X     ( !BTEST(cmd_flags(cmd), pa_OPTSONLY)  && \
  380. X       !BTEST(cmd_state(cmd), ps_NOFLAGS)  && \
  381. X!      *s == c_KWD_PFX  &&  *(s+1) \
  382. X     )
  383. X  
  384. X  
  385. X  /***************************************************************************
  386. X--- 58,79 ----
  387. X  #define isOPT(s)  \
  388. X     ( !BTEST(cmd_flags(cmd), pa_KWDSONLY)  && \
  389. X       !BTEST(cmd_state(cmd), ps_NOFLAGS)  && \
  390. X!      (*s == c_OPT_PFX)  &&  *(s+1) \
  391. X     )
  392. X  
  393. X+ #ifndef POSIX_SOURCE
  394. X  #define isKWD(s)  \
  395. X     ( !BTEST(cmd_flags(cmd), pa_OPTSONLY)  && \
  396. X       !BTEST(cmd_state(cmd), ps_NOFLAGS)  && \
  397. X!      (*s == c_KWD_PFX)  &&  *(s+1) \
  398. X     )
  399. X+ #else
  400. X+ #define isKWD(s)  \
  401. X+    ( !BTEST(cmd_flags(cmd), pa_OPTSONLY)  && \
  402. X+      !BTEST(cmd_state(cmd), ps_NOFLAGS)  && \
  403. X+      (*s == c_OPT_PFX)  &&  (*(s+1) == c_OPT_PFX)  &&  *(s+2) \
  404. X+    )
  405. X+ #endif
  406. X  
  407. X  
  408. X  /***************************************************************************
  409. X***************
  410. X*** 135,140 ****
  411. X--- 147,153 ----
  412. X        if ( isKWD(p) ) {  /* we have a keyword here */
  413. X           char *s, c = '\0';
  414. X  
  415. X+ #ifndef POSIX_SOURCE
  416. X           /* check for `++' to end flags */
  417. X           if ( *(p+1) == c_KWD_PFX  &&  !*(p+2) ) {
  418. X              BSET( cmd_state(cmd), ps_NOFLAGS );
  419. X***************
  420. X*** 141,148 ****
  421. X--- 154,165 ----
  422. X              cmd_list(cmd) = ARGDESCNULL;
  423. X              continue;
  424. X           }
  425. X+ #endif
  426. X  
  427. X              /* get past prefix and look for possible argument */
  428. X+ #ifdef POSIX_SOURCE
  429. X+          ++p;
  430. X+ #endif
  431. X           s = strpbrk(++p, s_ARG_SEP);
  432. X           if(s) {
  433. X              c = *s;
  434. X***************
  435. X*** 164,170 ****
  436. X--- 181,191 ----
  437. X           if ( c )  *(s-1) = c;  /* restore the equal sign */
  438. X  
  439. X           if ( !is_match ) {
  440. X+ #ifndef POSIX_SOURCE
  441. X              usrerr("option %c%s unknown", c_KWD_PFX, p);
  442. X+ #else
  443. X+             usrerr("option %c%c%s unknown", c_OPT_PFX, c_OPT_PFX, p);
  444. X+ #endif
  445. X              parse_error = pe_SYNTAX;
  446. X              cmd_list(cmd) = ARGDESCNULL;
  447. X              continue;
  448. X***************
  449. X*** 525,535 ****
  450. X--- 546,565 ----
  451. X           sprintf( buf, "%c%c", c_OPT_PFX, arg_cname(ad) );
  452. X        }
  453. X        else if ( !(usgflags & usg_OPTS) ) {
  454. X+ #ifndef POSIX_SOURCE
  455. X           sprintf( buf, "%c%s", c_KWD_PFX, keyword );
  456. X+ #else
  457. X+          sprintf( buf, "%c%c%s", c_OPT_PFX, c_OPT_PFX, keyword );
  458. X+ #endif
  459. X        }
  460. X        else  {  /* use both */
  461. X+ #ifndef POSIX_SOURCE
  462. X           sprintf( buf, "%c%c|%c%s", c_OPT_PFX, arg_cname(ad),
  463. X                                      c_KWD_PFX, keyword );
  464. X+ #else
  465. X+          sprintf( buf, "%c%c|%c%c%s", c_OPT_PFX, arg_cname(ad),
  466. X+                                       c_OPT_PFX, c_OPT_PFX, keyword );
  467. X+ #endif
  468. X        }
  469. X  
  470. X        pos = buf + strlen(buf);
  471. X***************
  472. X*** 680,686 ****
  473. X  
  474. X        if ( description  &&  *description ) {
  475. X           fprintf( fp, "Description:\n" );
  476. X!          indent_para(fp, max_cols, 8, "", 0, description);
  477. X           fputc( '\n', fp );
  478. X        }
  479. X     }/*if*/
  480. X--- 710,716 ----
  481. X  
  482. X        if ( description  &&  *description ) {
  483. X           fprintf( fp, "Description:\n" );
  484. X!          indent_para(fp, max_cols, 8, "", 0, description, 0);
  485. X           fputc( '\n', fp );
  486. X        }
  487. X     }/*if*/
  488. X*** vms_args.c.OLD    Thu Dec  5 09:56:28 1991
  489. X--- vms_args.c    Tue Nov 26 16:35:15 1991
  490. X***************
  491. X*** 1027,1033 ****
  492. X  
  493. X        if ( description  &&  *description ) {
  494. X           fprintf( fp, "Description:\n" );
  495. X!          indent_para(fp, max_cols, 8, "", 0, description);
  496. X           fputc( '\n', fp );
  497. X        }
  498. X     }/*if*/
  499. X--- 1027,1033 ----
  500. X  
  501. X        if ( description  &&  *description ) {
  502. X           fprintf( fp, "Description:\n" );
  503. X!          indent_para(fp, max_cols, 8, "", 0, description, 0);
  504. X           fputc( '\n', fp );
  505. X        }
  506. X     }/*if*/
  507. END_OF_FILE
  508. if test 15747 -ne `wc -c <'PATCH10'`; then
  509.     echo shar: \"'PATCH10'\" unpacked with wrong size!
  510. fi
  511. # end of 'PATCH10'
  512. fi
  513. echo shar: End of shell archive.
  514. exit 0
  515.  
  516. exit 0 # Just in case...
  517. -- 
  518. Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
  519. Sterling Software, IMD           UUCP:     uunet!sparky!kent
  520. Phone:    (402) 291-8300         FAX:      (402) 291-4362
  521. Please send comp.sources.misc-related mail to kent@uunet.uu.net.
  522.